package com.bangcommunity.bbframe.common.proxy;

import java.util.Map;

/**
 * @author tanghc
 * @date 18/1/9
 */
public abstract class DelegateExecutor<T> {
    /**
     * 主方法之前执行的逻辑
     */
    public abstract void doBefore(Map<String, Object> context);

    /**
     * 主方法
     * 
     * @param <T>
     * @return
     */
    public abstract T doExecute(Map<String, Object> context);

    /**
     * 异常时执行的异常方法
     * 
     * @param e
     * @return
     */
    public abstract boolean doException(Map<String, Object> context, Exception e);

    /**
     * final方法。根据参数exception是否为空判断之前是否有异常
     * 
     * @param t
     * @param e
     */
    public abstract void doFinal(Map<String, Object> context, T t, Exception e);
}
